package com.ehome.poct.base.device.repository;

import com.ehome.core.repository.BaseRepository;
import com.ehome.poct.base.api.dto.device.*;
import com.ehome.poct.base.api.vo.device.TestDeviceClinicVO;
import com.ehome.poct.base.api.vo.device.TestDeviceVO;

import java.util.List;


public interface TestDeviceRepository extends BaseRepository<TestDeviceDTO> {
    TestDeviceVO getBySno(String sno);
    
    List<TestDeviceClinicVO> getDeviceBySno(TestDeviceClinicDTO testDeviceClinicDTO);

    Boolean isExistence(String sno);

    Boolean addDevice(String sno,Integer deviceType);
    /**
     * 修改设备状态
     * @param dto
     */
    void updateStatus(DeviceStatusDTO dto);

    /**
     * 校验传入的诊所ID,和设备编号绑定关系是否一致v
     * @param sno
     * @param clinicId
     * @return
     */
    Boolean isBind(String sno,Long clinicId);
    
    /**
     * 根据诊所ID查找诊所的设备信息
     * @param clinicId 诊所Id
     * @return
     */
    List<TestDeviceVO> getByClinic(Long clinicId);
    
    /**
     * 根据设备编号+设备类型+诊所ID 返回设备信息
     * @param clinicId
     * @param sno
     * @param deviceType
     * @return
     */
    TestDeviceVO getByClinic(Long clinicId, String sno, Integer deviceType);

    /**
     * 根据设备编号和类型获取设备
     * @param sno 设备编号
     * @param deviceType 设备类型 1金标 2 血常规
     * @return 设备dto
     */
    TestDeviceVO getBySnoAndType(String sno,Integer deviceType);
    /**
     * 根据设备编号和类型获取设备
     * @param clinicId 诊所ID
     * @param deviceType 设备类型 1金标 2 血常规
     * @return 设备dto
     */
    TestDeviceVO getByClinicAndType(Long  clinicId,Integer deviceType);

    /**
     * 总绑定设备数
     * @param qry
     * @return
     */
    Integer bindDeviceCount(TestVersionRelationQry qry);

    /**
     * 获取绑定诊所ID
     *
     * @return
     */
    List<Long> getAllBindClinic();
}
